﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include "GnufBase.h"

class QWidget;

namespace gnuf {

    class IProjectDisplay;
    class Info;
    
    class GNUF_BASE_EXPORT IAssetDisplay : public gcmp::WeakReferenceable
    {
        DEFINE_CAST_BASE(IAssetDisplay)
    protected:
        explicit IAssetDisplay();
        virtual ~IAssetDisplay();

    public:
        virtual IProjectDisplay * onGetProjectDisplay()  = 0;
        virtual const IProjectDisplay * onGetProjectDisplay() const = 0;
        virtual void onClose() = 0;
        virtual void onActivate() = 0;
        virtual void onDeactivate() = 0;
        virtual bool onIsActive() const = 0;
        virtual void onPreShown() = 0;
        virtual void onPreHidden() = 0;
        
        virtual const std::string & onGetId() const = 0;
        virtual const std::wstring & onGetCaption() const = 0;
        virtual const std::wstring & onGetFullCaption() const = 0;
        virtual const Info * onGetIconButton() const = 0;
        virtual bool onEqual(const IAssetDisplay *) const = 0;
        virtual QWidget * onGetQtWidget()  = 0;
        virtual const QWidget * onGetQtWidget() const = 0;
        virtual bool onMakeScreenShot(std::wstring &) const = 0;
    };
    
}
